package com.ruoyi.system.service.impl;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import com.ruoyi.common.utils.AvatarUpLoadUtil;
import com.ruoyi.system.mapper.ProductCenterListMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ruoyi.system.domain.ProductCenterList;
import com.ruoyi.system.service.IProductCenterListService;
import com.ruoyi.common.utils.FileUpLoadUtil;
/**
 * 研发中心展示Service业务层处理
 *
 * @author ruoyi
 * @date 2025-02-01
 */
@Service
public class ProductCenterListServiceImpl implements IProductCenterListService
{
    @Autowired
    private ProductCenterListMapper productCenterListMapper;
    @Autowired
    private AvatarUpLoadUtil avatarUploadUtil;
    @Autowired
    private FileUpLoadUtil fileUpLoadUtil;

    /**
     * 查询研发中心展示
     *
     * @param productId 研发中心展示主键
     * @return 研发中心展示
     */
    @Override
    public ProductCenterList selectProductCenterListByProductId(String productId)
    {
        return productCenterListMapper.selectProductCenterListByProductId(productId);
    }

    /**
     * 查询研发中心展示列表
     *
     * @param productCenterList 研发中心展示
     * @return 研发中心展示
     */
    @Override
    public List<ProductCenterList> selectProductCenterListList(ProductCenterList productCenterList)
    {
        return productCenterListMapper.selectProductCenterListList(productCenterList);
    }

    /**
     * 新增研发中心展示
     *
     * @param productCenterList 研发中心展示
     * @return 结果
     */
    @Override
    public int insertProductCenterList(ProductCenterList productCenterList)
    {
        if (productCenterList.getAvatarFile() != null && !productCenterList.getAvatarFile().isEmpty()) {
            // 上传头像文件并获取文件 URL
            try (InputStream inputStream = productCenterList.getAvatarFile().getInputStream()) {
                // 读取图片的字节数据
                byte[] fileBytes = inputStream.readAllBytes();

                // 调用上传方法
                String pictureUrl = fileUpLoadUtil.uploadFileToOSS(fileBytes, productCenterList.getProductId(),productCenterList.getPictureUrl());
                // 将文件 URL 存储到数据库中
                productCenterList.setPictureUrl(pictureUrl);
                System.out.println("产品封面图片上传成功");

            } catch (IOException e) {
                e.printStackTrace();
                throw new RuntimeException("产品封面图片上传失败: " + e.getMessage(), e);
            }
        }
        if (productCenterList.getVideoFile() != null && !productCenterList.getVideoFile().isEmpty()) {
            // 上传头像文件并获取文件 URL
            try (InputStream inputStream = productCenterList.getVideoFile().getInputStream()) {
                // 读取图片的字节数据
                byte[] fileBytes = inputStream.readAllBytes();
                // 调用上传方法
                String videoUrl = fileUpLoadUtil.uploadFileToOSS(fileBytes, productCenterList.getProductId()+"video",productCenterList.getVideoUrl());
                // 将文件 URL 存储到数据库中
                productCenterList.setVideoUrl(videoUrl);
                System.out.println("产品宣传视频上传成功");

            } catch (IOException e) {
                e.printStackTrace();
                throw new RuntimeException("产品宣传视频上传失败: " + e.getMessage(), e);
            }
        }
        return productCenterListMapper.insertProductCenterList(productCenterList);
    }

    /**
     * 修改研发中心展示
     *
     * @param productCenterList 研发中心展示
     * @return 结果
     */
    @Override
    public int updateProductCenterList(ProductCenterList productCenterList)
    {
        if (productCenterList.getAvatarFile() != null && !productCenterList.getAvatarFile().isEmpty()) {
            // 上传头像文件并获取文件 URL
            try (InputStream inputStream = productCenterList.getAvatarFile().getInputStream()) {
                // 读取图片的字节数据
                byte[] fileBytes = inputStream.readAllBytes();

                // 调用上传方法
                String pictureUrl = fileUpLoadUtil.uploadFileToOSS(fileBytes, productCenterList.getProductId(),productCenterList.getPictureUrl());
                // 将文件 URL 存储到数据库中
                productCenterList.setPictureUrl(pictureUrl);
                System.out.println("产品封面图片上传成功");

            } catch (IOException e) {
                e.printStackTrace();
                throw new RuntimeException("产品封面图片上传失败: " + e.getMessage(), e);
            }
        }
        if (productCenterList.getVideoFile() != null && !productCenterList.getVideoFile().isEmpty()) {
            // 上传头像文件并获取文件 URL
            try (InputStream inputStream = productCenterList.getVideoFile().getInputStream()) {
                // 读取图片的字节数据
                byte[] fileBytes = inputStream.readAllBytes();
                // 调用上传方法
                String videoUrl = fileUpLoadUtil.uploadFileToOSS(fileBytes, productCenterList.getProductId()+"video",productCenterList.getVideoUrl());
                // 将文件 URL 存储到数据库中
                productCenterList.setVideoUrl(videoUrl);
                System.out.println("产品宣传视频上传成功");

            } catch (IOException e) {
                e.printStackTrace();
                throw new RuntimeException("产品宣传视频上传失败: " + e.getMessage(), e);
            }
        }
        return productCenterListMapper.updateProductCenterList(productCenterList);
    }

    /**
     * 批量删除研发中心展示
     *
     * @param productIds 需要删除的研发中心展示主键
     * @return 结果
     */
    @Override
    public int deleteProductCenterListByProductIds(String[] productIds)
    {
        return productCenterListMapper.deleteProductCenterListByProductIds(productIds);
    }

    /**
     * 删除研发中心展示信息
     *
     * @param productId 研发中心展示主键
     * @return 结果
     */
    @Override
    public int deleteProductCenterListByProductId(String productId)
    {
        return productCenterListMapper.deleteProductCenterListByProductId(productId);
    }
}
